﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using Assist;
using Autodesk.Revit.DB;
using YArchitech.Controls;
using YArchitech.LIB;
using YJKRevitBase.WinForm;
using YJKRevitBase.WinForm.HookSuit;
using YJKRevitDimension.SymbolTextSetting;
using YJKDataBase;

namespace YJKRevitDimension.PlaneSlopeDimension
{
	public partial class SlopeDimensionForm : System.Windows.Forms.Form
	{
		[DllImport("user32.dll", EntryPoint = "SendMessageA")]
		public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);

		[DllImport("user32.dll")]
		public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

		public SlopeDimensionForm(SlopeDimensionStructCol slopeDimStructCol)
		{
			this.m_slopeDimStructCol = slopeDimStructCol;
			this.InitializeComponent();
		}

        public SlopeDimensionForm(SlopeDimensionStructCol slopeDimStructCol, YJKRevitBase.WinForm.WindowHandle revitHandle)
		{
			this.m_slopeDimStructCol = slopeDimStructCol;
			this.m_revitHandle = revitHandle;
			this.InitializeComponent();
		}

        public SlopeDimensionForm(SlopeDimensionStructCol slopeDimStructCol, YJKRevitBase.WinForm.WindowHandle revitHandle, Autodesk.Revit.DB.Document doc)
		{
			this.m_slopeDimStructCol = slopeDimStructCol;
			this.m_revitHandle = revitHandle;
			this.InitializeComponent();
			this.m_strRevitVersion = doc.Application.VersionNumber;
		}

		private void IniSlopeDimConfig()
		{
			this.m_INIClass = new INIClass(this.m_slopeDimConfigFilePath);
			if (!this.m_INIClass.ExistINIFile())
			{
				return;
			}
			foreach (string text in this.m_INIClass.IniReadValue("箭头样式", "箭头样式").Split(new char[]
			{
				'|'
			}))
			{
				SlopeDimensionDataConfig slopeDimensionDataConfig = new SlopeDimensionDataConfig();
				if (this.cmbArrowType.Text == text)
				{
					slopeDimensionDataConfig.Font = this.cmbTextFont.Text;
					slopeDimensionDataConfig.TextHeight = this.cmbTextHeight.Text;
					slopeDimensionDataConfig.TextWidth = this.txtTextWidth.Text;
					slopeDimensionDataConfig.ArrowLength = this.cmbArrowLength.Text;
					slopeDimensionDataConfig.ArrowAngle = this.cmbArrowAngle.Text;
					slopeDimensionDataConfig.Offset = this.cmbOffset.Text;
				}
				else
				{
					slopeDimensionDataConfig.Font = this.m_INIClass.IniReadValue(text, "文字字体");
					slopeDimensionDataConfig.TextHeight = this.m_INIClass.IniReadValue(text, "文字高度");
					slopeDimensionDataConfig.TextWidth = this.m_INIClass.IniReadValue(text, "文字宽度");
					slopeDimensionDataConfig.ArrowLength = this.m_INIClass.IniReadValue(text, "箭头长度");
					slopeDimensionDataConfig.ArrowAngle = this.m_INIClass.IniReadValue(text, "箭头角度");
					slopeDimensionDataConfig.Offset = this.m_INIClass.IniReadValue(text, "文字与基线距离");
				}
				this.m_DicSlopeConfigData[text] = slopeDimensionDataConfig;
			}
		}

		private void WriteSlopeDimToText()
		{
			string text = "*";
			foreach (KeyValuePair<string, SlopeDimensionDataConfig> keyValuePair in this.m_DicSlopeConfigData)
			{
				if (text == "*")
				{
					text = keyValuePair.Key;
				}
				else
				{
					text = text + "|" + keyValuePair.Key;
				}
				SlopeDimensionDataConfig value = keyValuePair.Value;
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "文字字体", value.Font);
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "文字高度", value.TextHeight);
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "文字宽度", value.TextWidth);
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "箭头长度", value.ArrowLength);
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "箭头角度", value.ArrowAngle);
				this.m_INIClass.IniWriteValue(keyValuePair.Key, "文字与基线距离", value.Offset);
			}
			this.m_INIClass.IniWriteValue("箭头样式", "箭头样式", text);
		}

		private void GetSlopeDimTextToDic()
		{
			SlopeDimensionDataConfig slopeDimensionDataConfig;
			if (this.m_DicSlopeConfigData.ContainsKey(this.cmbArrowType.SelectedItem.ToString()))
			{
				slopeDimensionDataConfig = this.m_DicSlopeConfigData[this.cmbArrowType.SelectedItem.ToString()];
			}
			else
			{
				slopeDimensionDataConfig = new SlopeDimensionDataConfig();
			}
			slopeDimensionDataConfig.Font = this.cmbTextFont.SelectedIndex.ToString();
			slopeDimensionDataConfig.TextHeight = this.cmbTextHeight.SelectedIndex.ToString();
			slopeDimensionDataConfig.TextWidth = this.txtTextWidth.Text;
			slopeDimensionDataConfig.ArrowLength = this.cmbArrowLength.SelectedIndex.ToString();
			slopeDimensionDataConfig.ArrowAngle = this.cmbArrowAngle.SelectedIndex.ToString();
			slopeDimensionDataConfig.Offset = this.cmbOffset.SelectedIndex.ToString();
			this.m_DicSlopeConfigData[this.cmbArrowType.SelectedItem.ToString()] = slopeDimensionDataConfig;
		}

		private void SetSlopeDimTextFromDic()
		{
			if (this.m_DicSlopeConfigData.ContainsKey(this.cmbArrowType.SelectedItem.ToString()))
			{
				SlopeDimensionDataConfig slopeDimensionDataConfig = this.m_DicSlopeConfigData[this.cmbArrowType.SelectedItem.ToString()];
				this.cmbTextFont.SelectedIndex = int.Parse(slopeDimensionDataConfig.Font);
				this.cmbTextHeight.SelectedIndex = int.Parse(slopeDimensionDataConfig.TextHeight);
				this.txtTextWidth.Text = slopeDimensionDataConfig.TextWidth;
				this.cmbArrowLength.SelectedIndex = int.Parse(slopeDimensionDataConfig.ArrowLength);
				this.cmbArrowAngle.SelectedIndex = int.Parse(slopeDimensionDataConfig.ArrowAngle);
				this.cmbOffset.SelectedIndex = int.Parse(slopeDimensionDataConfig.Offset);
			}
		}

		private void SlopeDimensionForm_Load(object sender, EventArgs e)
		{
			//base.Icon = Resource.YArchitechIcon;
			this.InitUI();
			this.ReadData();
			this.IniSlopeDimConfig();
			this.m_hook = new MouseHook(this);
			this.m_hook.HookStart();
		}

		private bool ReadData()
		{
			int x = 0;
			int y = 0;
			try
			{
				FileStream fileStream = new FileStream(Ultility.GetUserTempDirectory() + "\\slopeFormData.txt", FileMode.OpenOrCreate);
				StreamReader streamReader = new StreamReader(fileStream);
				bool flag = false;
				string text;
				while ((text = streamReader.ReadLine()) != null)
				{
					string[] array = text.Split(new char[]
					{
						'-'
					});
					int num = Convert.ToInt32(this.m_strRevitVersion);
					int num2 = Convert.ToInt32(array[0]);
					if ((num > 2016 && num2 > 2016) || (num <= 2016 && num2 <= 2016))
					{
						this.txtUpText.Text = array[1];
						this.txtDownText.Text = array[2];
						this.cmbArrowType.SelectedIndex = int.Parse(array[3]);
						this.cmbTextFont.SelectedIndex = int.Parse(array[4]);
						this.cmbTextHeight.SelectedIndex = int.Parse(array[5]);
						this.txtTextWidth.Text = array[6];
						this.cmbArrowLength.SelectedIndex = int.Parse(array[7]);
						this.cmbArrowAngle.SelectedIndex = int.Parse(array[8]);
						this.cmbOffset.SelectedIndex = int.Parse(array[9]);
						x = int.Parse(array[10]);
						y = int.Parse(array[11]);
						flag = true;
						break;
					}
				}
				if (!flag)
				{
					this.SetFormInitialValue();
				}
				streamReader.Close();
				fileStream.Close();
			}
			catch (Exception)
			{
				this.SetFormInitialValue();
			}
			System.Drawing.Point location = new System.Drawing.Point(x, y);
			base.Location = location;
			return true;
		}

		private void SetFormInitialValue()
		{
			this.txtUpText.Text = "3%";
			this.txtDownText.Text = "5%";
			this.cmbArrowType.SelectedIndex = 6;
			this.cmbTextFont.SelectedIndex = 219;
			this.txtTextWidth.Text = "0.7";
			this.cmbArrowLength.SelectedIndex = 0;
			this.cmbArrowAngle.SelectedIndex = 0;
			this.cmbOffset.SelectedIndex = 5;
			if (2016 < Convert.ToInt32(this.m_strRevitVersion))
			{
				this.cmbTextHeight.SelectedIndex = 4;
				return;
			}
			this.cmbTextHeight.SelectedIndex = 5;
		}

		private bool SaveData()
		{
			try
			{
				this.DeleteDataByVersion();
				FileStream fileStream = new FileStream(Ultility.GetUserTempDirectory() + "\\slopeFormData.txt", FileMode.Append);
				StreamWriter streamWriter = new StreamWriter(fileStream);
				streamWriter.Flush();
				string value = string.Concat(new object[]
				{
					this.m_strRevitVersion,
					"-",
					this.txtUpText.Text,
					"-",
					this.txtDownText.Text,
					"-",
					this.cmbArrowType.SelectedIndex,
					"-",
					this.cmbTextFont.SelectedIndex,
					"-",
					this.cmbTextHeight.SelectedIndex,
					"-",
					this.txtTextWidth.Text,
					"-",
					this.cmbArrowLength.SelectedIndex,
					"-",
					this.cmbArrowAngle.SelectedIndex,
					"-",
					this.cmbOffset.SelectedIndex,
					"-",
					base.Location.X,
					"-",
					base.Location.Y
				});
				streamWriter.WriteLine(value);
				streamWriter.Close();
				fileStream.Close();
			}
			catch (Exception)
			{
				return false;
			}
			return true;
		}

		private void DeleteDataByVersion()
		{
			try
			{
				string path = Ultility.GetUserTempDirectory() + "\\slopeFormData.txt";
				List<string> list = new List<string>(File.ReadAllLines(path));
				if (list.Count != 0)
				{
					FileStream fileStream = new FileStream(path, FileMode.Open);
					StreamReader streamReader = new StreamReader(fileStream);
					streamReader.BaseStream.Seek(0L, SeekOrigin.Begin);
					int num = 0;
					string text;
					while ((text = streamReader.ReadLine()) != null)
					{
						string[] array = text.Split(new char[]
						{
							'-'
						});
						if ((array[0] == "2016" && this.m_strRevitVersion == "2016") || (array[0] != "2016" && this.m_strRevitVersion != "2016"))
						{
							list.RemoveAt(num);
							break;
						}
						num++;
					}
					streamReader.Close();
					fileStream.Close();
					File.WriteAllLines(path, list.ToArray());
				}
			}
			catch
			{
			}
		}

		private void InitUI()
		{
			if (this.cmbArrowType.Items.Count > 0)
			{
				this.cmbArrowType.DataSource = null;
			}
			foreach (SlopeDimensionStruct slopeDimensionStruct in this.m_slopeDimStructCol.LstSlopeDimensionStruct)
			{
				this.cmbArrowType.Items.Add(slopeDimensionStruct.Name);
			}
			this.cmbArrowType.SelectedIndex = 0;
			this.cmbArrowAngle.Items.Clear();
			if (this.IsTowLineArrowType(this.cmbArrowType.Text.ToString()))
			{
				foreach (int num in this.m_TwoLineArrowTypeAngles)
				{
					this.cmbArrowAngle.Items.Add(num);
				}
				this.cmbArrowAngle.SelectedIndex = 0;
				this.txtDownText.Enabled = true;
			}
			else
			{
				foreach (int num2 in this.m_OneLineArrowTypeAngles)
				{
					this.cmbArrowAngle.Items.Add(num2);
				}
				if (this.ArrowType == "带斜角的单侧实心箭头")
				{
					this.cmbArrowAngle.SelectedIndex = 0;
				}
				else
				{
					this.cmbArrowAngle.SelectedIndex = 1;
				}
				this.txtDownText.Enabled = false;
			}
			new List<string>();
			FontFamily[] families = new InstalledFontCollection().Families;
			if (families == null || families.Length < 1)
			{
				return;
			}
			foreach (FontFamily fontFamily in families)
			{
				this.cmbTextFont.Items.Add(fontFamily.Name);
			}
			this.cmbTextFont.SelectedItem = "仿宋";
			this.LineUpText = this.txtUpText.Text;
			this.LineDownText = this.txtDownText.Text;
			this.LineUpmaxLength = null;
			this.LineDownmaxLength = null;
			this.FontType = this.cmbTextFont.SelectedItem.ToString();
			this.TextHeight = this.cmbTextHeight.SelectedItem.ToString();
			this.TextWidth = this.txtTextWidth.Text;
			this.ArrowType = this.cmbArrowType.SelectedItem.ToString();
			this.ArrowLength = this.cmbArrowLength.SelectedItem.ToString();
			this.ArrowAngle = this.cmbArrowAngle.SelectedItem.ToString();
			this.Offset = this.cmbOffset.SelectedItem.ToString();
		}

		private void AddTextToTextBox(string str)
		{
			System.Windows.Forms.TextBox textBox;
			if (this.m_checktxt)
			{
				textBox = this.txtUpText;
			}
			else
			{
				textBox = this.txtDownText;
			}
			int selectionStart = textBox.SelectionStart;
			if (selectionStart >= 0)
			{
				textBox.Text = textBox.Text.Insert(selectionStart, str);
				textBox.Focus();
				textBox.SelectionStart = selectionStart + str.Length;
				return;
			}
			System.Windows.Forms.TextBox textBox2 = textBox;
			textBox2.Text += str;
			textBox.Focus();
			textBox.SelectionStart = selectionStart + str.Length;
		}

		private void txtUpText_MouseClick(object sender, MouseEventArgs e)
		{
			this.m_checktxt = true;
		}

		private void txtDownText_MouseClick(object sender, MouseEventArgs e)
		{
			this.m_checktxt = false;
		}

		private void txtUpText_TextChanged(object sender, EventArgs e)
		{
			this.LineUpText = this.txtUpText.Text.Trim();
			if (this.LineUpText.Length > 0)
			{
				this.LineUpmaxLength = this.ReadTextMaxLenth(this.txtUpText).ToString();
			}
		}

		private void txtDownText_TextChanged(object sender, EventArgs e)
		{
			this.LineDownText = this.txtDownText.Text.Trim();
			if (this.LineDownText.Length > 0)
			{
				this.LineDownmaxLength = this.ReadTextMaxLenth(this.txtDownText).ToString();
			}
		}

		public double ReadTextMaxLenth(System.Windows.Forms.TextBox tb)
		{
			return (double)Encoding.Default.GetBytes(tb.Text).Length;
		}

		private void cmbArrowType_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbArrowType.Items.Count > 0)
			{
				this.ArrowType = this.cmbArrowType.SelectedItem.ToString();
			}
			if (!this.IsTowLineArrowType(this.ArrowType))
			{
				this.txtDownText.Text = "";
				this.txtDownText.Enabled = false;
				this.cmbArrowAngle.Items.Clear();
				if (this.ArrowType != "带斜角的单侧实心箭头")
				{
					foreach (int num in this.m_OneLineArrowTypeAngles)
					{
						this.cmbArrowAngle.Items.Add(num);
					}
					this.cmbArrowAngle.SelectedIndex = 0;
				}
				else
				{
					foreach (int num2 in this.m_TwoLineArrowTypeAngles)
					{
						this.cmbArrowAngle.Items.Add(num2);
					}
					this.cmbArrowAngle.SelectedIndex = 0;
				}
			}
			else
			{
				this.txtDownText.Enabled = true;
				this.txtDownText.Text = "5%";
				this.cmbArrowAngle.Items.Clear();
				foreach (int num3 in this.m_TwoLineArrowTypeAngles)
				{
					this.cmbArrowAngle.Items.Add(num3);
				}
				this.cmbArrowAngle.SelectedIndex = 1;
			}
			SlopeDimensionStruct slopeDimensionStruct;
			if (!this.GetSlopeDimStructByName(this.ArrowType, out slopeDimensionStruct))
			{
				return;
			}
			this.cmbTextFont.Text = slopeDimensionStruct.Font;
			this.cmbTextHeight.Text = slopeDimensionStruct.TextHeight.ToString();
			this.txtTextWidth.Text = slopeDimensionStruct.TextWidth.ToString();
			this.cmbArrowLength.Text = slopeDimensionStruct.ArrowLength.ToString();
			this.cmbOffset.Text = slopeDimensionStruct.Offset.ToString();
			this.SetSlopeDimTextFromDic();
			base.Focus();
		}

		private bool GetSlopeDimStructByName(string arrowType, out SlopeDimensionStruct slopeDimStruct)
		{
			foreach (SlopeDimensionStruct slopeDimensionStruct in this.m_slopeDimStructCol.LstSlopeDimensionStruct)
			{
				if (slopeDimensionStruct.Name == arrowType)
				{
					slopeDimStruct = slopeDimensionStruct;
					return true;
				}
			}
			slopeDimStruct = null;
			return false;
		}

		private bool IsTowLineArrowType(string arrowType)
		{
			return !this.m_OneLineArrowType.Contains(arrowType);
		}

		private void cmbTextFont_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbTextFont.Items.Count > 0)
			{
				this.FontType = this.cmbTextFont.SelectedItem.ToString();
			}
		}

		private void cmbTextFont_TextChanged(object sender, EventArgs e)
		{
			if (this.cmbTextFont.Items.Count > 0)
			{
				this.FontType = this.cmbTextFont.Text.ToString();
			}
		}

		private void cmbTextHeight_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbTextHeight.Items.Count > 0)
			{
				this.TextHeight = this.cmbTextHeight.SelectedItem.ToString();
			}
		}

		private void cmbTextHeight_TextChanged(object sender, EventArgs e)
		{
			if (this.cmbTextHeight.Items.Count > 0)
			{
				this.TextHeight = this.cmbTextHeight.Text.ToString();
			}
		}

		private void txtTextWidth_TextChanged(object sender, EventArgs e)
		{
			this.m_BRight = true;
		}

		private void cmbArrowLength_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbArrowLength.Items.Count > 0)
			{
				this.ArrowLength = this.cmbArrowLength.SelectedItem.ToString();
			}
		}

		private void cmbArrowLength_TextChanged(object sender, EventArgs e)
		{
			if (this.cmbArrowLength.Items.Count > 0)
			{
				this.ArrowLength = this.cmbArrowLength.Text.ToString();
			}
		}

		private void cmbArrowAngle_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbArrowAngle.Items.Count > 0)
			{
				this.ArrowAngle = this.cmbArrowAngle.SelectedItem.ToString();
			}
		}

		private void cmbArrowAngle_TextChanged(object sender, EventArgs e)
		{
			if (this.cmbArrowAngle.Items.Count > 0)
			{
				this.ArrowAngle = this.cmbArrowAngle.Text.ToString();
			}
		}

		private void cmbOffset_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (this.cmbOffset.Items.Count > 0)
			{
				this.Offset = this.cmbOffset.SelectedItem.ToString();
			}
		}

		private void cmbOffset_TextChanged(object sender, EventArgs e)
		{
			if (this.cmbOffset.Items.Count > 0)
			{
				this.Offset = this.cmbOffset.Text.ToString();
			}
		}

		private void btnRad_Click(object sender, EventArgs e)
		{
			this.AddTextToTextBox("°");
		}

		private void btnDivide_Click(object sender, EventArgs e)
		{
			this.AddTextToTextBox("/");
		}

		private void btnPercent_Click(object sender, EventArgs e)
		{
			this.AddTextToTextBox("%");
		}

		private void btnColon_Click(object sender, EventArgs e)
		{
			this.AddTextToTextBox("：");
		}

		private void SlopeDimensionForm_FormClosed(object sender, FormClosedEventArgs e)
		{
			this.SaveData();
			this.GetSlopeDimTextToDic();
			this.WriteSlopeDimToText();
			if (this.m_hook != null)
			{
				this.m_hook.HookStop();
			}
			this.SendESC();
		}

		protected override bool ProcessKeyEventArgs(ref Message m)
		{
			int num = 256;
			int num2 = 27;
			if (m.Msg == num && m.WParam.ToInt32() == num2)
			{
				base.Close();
			}
			return base.ProcessKeyEventArgs(ref m);
		}

		private void SlopeDimensionForm_KeyPress(object sender, KeyPressEventArgs e)
		{
			if (e.KeyChar == '\u001b')
			{
				base.Close();
				return;
			}
		}

		private void SendESC()
		{
			int bVk = 27;
			int dwFlags = 0;
			int dwFlags2 = 2;
			int wMsg = 7;
			SlopeDimensionForm.SendMessage(this.m_revitHandle.Handle, wMsg, IntPtr.Zero, IntPtr.Zero);
			SlopeDimensionForm.keybd_event((byte)bVk, 0, dwFlags, 0);
			SlopeDimensionForm.keybd_event((byte)bVk, 0, dwFlags2, 0);
		}

		private void cmbArrowType_DropDown(object sender, EventArgs e)
		{
			this.GetSlopeDimTextToDic();
		}

		private void txtTextWidth_KeyPress(object sender, KeyPressEventArgs e)
		{
			this.m_txtTextWidth = this.txtTextWidth.Text;
			if (e.KeyChar == '.' && (this.txtTextWidth.Text.Contains('.') || this.txtTextWidth.Text.IsEmpty<char>()))
			{
				e.Handled = true;
				return;
			}
			if (!char.IsNumber(e.KeyChar) && e.KeyChar != '\b' && e.KeyChar != '.')
			{
				e.Handled = true;
				return;
			}
			if (e.KeyChar == '0' && this.txtTextWidth.Text == "0")
			{
				e.Handled = true;
				return;
			}
			e.Handled = false;
		}

		private void ChangeTextWidth()
		{
			try
			{
				double num = Convert.ToDouble(this.txtTextWidth.Text);
				if (num > 0.099999999 && num < 10.000000001)
				{
					this.TextWidth = this.txtTextWidth.Text;
					return;
				}
			}
			catch (Exception)
			{
			}
			this.txtTextWidth.Text = this.m_txtTextWidth;
			this.m_BRight = false;
			YJKMessageBox.Show("数值超出范围！请输入介于0.1和10.0之间的数值");
		}

		protected override void DefWndProc(ref Message m)
		{
			int msg = m.Msg;
			if (msg == 1125)
			{
				if (this.m_BRight)
				{
					this.ChangeTextWidth();
					return;
				}
			}
			else
			{
				base.DefWndProc(ref m);
			}
		}

		private void txtTextWidth_Leave(object sender, EventArgs e)
		{
			if (this.m_BRight)
			{
				this.ChangeTextWidth();
			}
		}

		public string LineUpText;

		public string LineDownText;

		public string LineUpmaxLength;

		public string LineDownmaxLength;

		public string FontType;

		public string TextHeight;

		public string TextWidth;

		public string ArrowType;

		public string ArrowLength;

		public string ArrowAngle;

		public string Offset;

		public bool m_checktxt = true;

		private SlopeDimensionStructCol m_slopeDimStructCol;

		private string[] m_OneLineArrowType = new string[]
		{
			"实心箭头",
			"单侧实心箭头",
			"空心箭头",
			"单侧空心箭头",
			"带斜角的单侧实心箭头"
		};

		private string[] m_TwoLineArrowType = new string[]
		{
			"单线箭头",
			"双线箭头"
		};

		private int[] m_OneLineArrowTypeAngles = new int[]
		{
			10,
			12,
			15,
			20,
			25,
			30
		};

		private int[] m_TwoLineArrowTypeAngles = new int[]
		{
			15,
			20,
			25,
			30
		};

        private YJKRevitBase.WinForm.WindowHandle m_revitHandle;

		private string m_slopeDimConfigFilePath = Product.DataLocation + "\\SlopeDimConfig.ini";

		private INIClass m_INIClass;

		private Dictionary<string, SlopeDimensionDataConfig> m_DicSlopeConfigData = new Dictionary<string, SlopeDimensionDataConfig>();

		private MouseHook m_hook;

		private bool m_BRight;

		private string m_txtTextWidth;

		private string m_strRevitVersion = "";
	}
}
